package beans;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="caracteristica")
public class Caracteristica {
	
	@EmbeddedId
	private CaracteristicaPK caracteristicaPK;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumns(value={@JoinColumn(name="iter_numero", insertable=false, updatable=false),
			@JoinColumn(name="proj_cod", insertable=false, updatable=false)})
	private Iteracao iteracao;
	
	@ManyToOne
	@JoinColumn(name="tipocar_cod", insertable=false, updatable=false)
	private TipoCaracteristica tipoCaracteristica;
	
	@Column(name="car_peso")
	private Integer peso;
	
	@Column(name="car_pontuacao_esperada")
	private Integer pontuacaoEsperada;

	public Iteracao getIteracao() {
		return iteracao;
	}

	public void setIteracao(Iteracao iteracao) {
		this.iteracao = iteracao;
		if(caracteristicaPK == null)
		{
			caracteristicaPK = new CaracteristicaPK();
		}
		caracteristicaPK.setIdProjeto(iteracao.getIteracaoPK().getIdProjeto());
		caracteristicaPK.setIterNumero(iteracao.getIteracaoPK().getIterNumero());
	}

	public TipoCaracteristica getTipoCaracteristica() {
		return tipoCaracteristica;
	}

	public void setTipoCaracteristica(TipoCaracteristica tipoCaracteristica) {
		this.tipoCaracteristica = tipoCaracteristica;
		if(caracteristicaPK == null)
		{
			caracteristicaPK = new CaracteristicaPK();
		}
		caracteristicaPK.setIdTipoCaracteristica(tipoCaracteristica.getIdTipoCaracteristica());
	}

	public Integer getPeso() {
		return peso;
	}

	public void setPeso(Integer peso) {
		this.peso = peso;
	}

	public Integer getPontuacaoEsperada() {
		return pontuacaoEsperada;
	}

	public void setPontuacaoEsperada(Integer pontuacaoEsperada) {
		this.pontuacaoEsperada = pontuacaoEsperada;
	}

	public CaracteristicaPK getCaracteristicaPK() {
		return caracteristicaPK;
	}

	public void setCaracteristicaPK(CaracteristicaPK caracteristicaPK) {
		this.caracteristicaPK = caracteristicaPK;
	}
}
